package control;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import boundary.UtilisateurEJB;
import entities.Utilisateur;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ComponentSystemEvent;
import javax.servlet.http.HttpServletRequest;

@Named(value = "utilisateurBean")
@RequestScoped
public class UtilisateurBean {

    //private List<Utilisateur> utilisateurs;
    @Inject
    UtilisateurEJB utilisateurEJB;

    private Utilisateur utilisateur = new Utilisateur();
    private Boolean logged;
    private String referer;

    public Utilisateur getUtilisateur() {
        return utilisateur;
    }

    public void setUtilisateur(Utilisateur utilisateur) {
        this.utilisateur = utilisateur;
    }

    public void addUtilisateur() {
        utilisateurEJB.creerUtilisateur(utilisateur);
    }

    public void delUtilisateur() {
        utilisateurEJB.supprimerUtilisateur(utilisateur);
    }

    public Boolean isLogged() {
        return logged;
    }

    public String login() {
        String url = "login.xhtml";
        String mail = utilisateur.getMail();
        String pw = utilisateur.getPw();
        if (utilisateur.getMail() != null && utilisateur.getPw() != null) {
            if (utilisateurEJB.findUtilisateur(mail, pw) != null) {
                logged = true;
                if ("".equals(referer) || referer == null) {
                    referer = "next.xhtml";
                }
                url = referer + "?faces-redirect=true";
            }

        } else {
            FacesContext.getCurrentInstance().addMessage("connexionForm:msgLogin", new FacesMessage("Identifiants incorrects"));
        }
        return url;
    }

    public void securityCheck(ComponentSystemEvent event) {
        if (!logged) {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml?faces-redirect=true&amp;url=" + ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).getRequestURL());
            } catch (IOException ex) {
                Logger.getLogger(UtilisateurBean.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

}
